#define _CRT_SECURE_NO_WARNINGS 1
#include<assert.h>
#include<string>
#include<iostream>


class string

{

public:

	char* c_str()
	{
		return _str;
	}

	string(const char* str = "")
	{
		_str = new char[strlen(str) + 1];
		strcpy(_str, str);
	}

	string(const string& s)
	{
		string strtmp(s._str);
		std::swap(_str, strtmp._str);
	}

	string& operator=(const string& s)
	{
		string strtmp(s._str);
		std::swap(_str, strtmp._str);
		return *this;
	}

	~string()
	{
		delete[]_str;
	}

private:

	char* _str;

};


int main()
{
	string s1("hello world");
	std::cout << s1.c_str() << std::endl;
	string s2;
	s2 = s1;
	std::cout << s2.c_str() << std::endl;
}